首先是gyr经过矫正(矫正的方法就是通过till_normal的数据均值来做差)
acc: 相对来说信号平稳
gyr: 信号平稳,而且在0.01的幅度内震荡(噪声)
senser的左右方向为x方向,上下为y方向,前后为z方向
暂时还不清楚磁场信号(mag)怎样利用
%pylab inline
pylab.rcParams['figure.figsize'] = (14.0, 10.0)
import numpy as np
import matplotlib.pyplot as plt
# Get the IMU signals from a file
def getSigs(fileName):
fin = open(fileName)
lines = fin.readlines()
fin.close()
res = []
for str in lines:
tmp = str.split()
tmp = map(eval, tmp)
res.append(tmp)
res_array = np.array(res)
res_array = res_array[10:, :]
#correctBias(res_array)
return res_array
# Get labels corresponding sig
def getLabels(fileName):
fin = open(fileName)
lines = fin.readlines()
fin.close()
#print lines
endpoint_label_list = []
for line in lines:
str_list = line.split(' ')
int_list = map(int, str_list)
endpoint_label_list.append(int_list)
return endpoint_label_list
def extractSig(sigfilePath, labelfilePath):
sig = getSigs(sigfilePath)
endpoint_label_list = getLabels(labelfilePath)
## test
true_label = []
for tmp in endpoint_label_list:
L = np.ones(tmp[1]-tmp[0]+1)*tmp[2]
true_label.extend(L)
return sig, np.array(true_label)
def getFilePath(fileName):
dataDir = '../data/'
labelDir = '../label/'
sigFilePath = dataDir + fileName
ind = fileName.find('.')
if ind > -1:
labelFilePath = labelDir + fileName[:ind] + '.label'
else:
logging.warning("wrong labelfilePath")
return sigFilePath, labelFilePath
def correctBias(array):
#still_array = getSigs('../data/still_normal.txt')
# TODO, the parameters may need be adjusted when in different posture
# The bias of gyr_x, gyr_y, gyr_z, statistics from still_normal.txt
gyr_bias = np.array([-0.01568079, 0.02071555, 0.0186753 ])
array[:, 3:6] = array[:, 3:6] - gyr_bias
def correctBias_accEnergy(acc_energy, gyr_energy, interval=30):
# gyr has been unbiased
T_still_gyr_energy = 0.01
acc_energy_avg = np.mean(acc_energy[:10])
#acc_energy_avg = 1.0
N = len(acc_energy)
acc_energy_correctBias = np.zeros(N)
for i in range(0, N, interval):
acc_energy_seg = acc_energy[i:i+interval]
gyr_energy_seg = gyr_energy[i:i+interval]
# Still
if sum(gyr_energy_seg >= T_still_gyr_energy) == 0:
acc_energy_avg = np.mean(acc_energy_seg)
acc_energy_correctBias[i:i+interval] = np.sqrt((acc_energy_seg - acc_energy_avg)**2)
return acc_energy_correctBias
def correctBias_gyr(gyr_xyz, gyr_energy, interval=30):
T_still_gyr_energy = 0.04
gyr_x = gyr_xyz[:,0]
gyr_y = gyr_xyz[:,1]
gyr_z = gyr_xyz[:,2]
N = len(gyr_energy)
gyr_x_avg = -0.01568079
gyr_y_avg = 0.02071555
gyr_z_avg = 0.0186753
for i in range(0, N, interval):
gyr_energy_seg = gyr_energy[i:i+interval]
if sum(gyr_energy_seg >= T_still_gyr_energy) == 0:
gyr_x_avg = np.mean(gyr_x[i:i+interval])
gyr_y_avg = np.mean(gyr_y[i:i+interval])
gyr_z_avg = np.mean(gyr_z[i:i+interval])
gyr_x[i:i+interval] -= gyr_x_avg
gyr_y[i:i+interval] -= gyr_y_avg
gyr_z[i:i+interval] -= gyr_z_avg
# Calculate the
def energyXYZ(array):
energy_acc = np.sqrt(np.sum(array[:,0:3]**2, 1))
energy_gyr = np.sqrt(np.sum(array[:,3:6]**2, 1))
energy_mag = np.sqrt(np.sum(array[:,6:]**2, 1))
tmp = np.array([energy_acc, energy_gyr, energy_mag])
return np.transpose(tmp)
def plotSigs(array, title_str):
#f, ax = plt.subplots(3)
f, ax = plt.subplots(2)
ax[0].plot(array[:, 0], 'b', label='acc-x')
ax[0].plot(array[:, 1], 'g', label='acc-y')
ax[0].plot(array[:, 2], 'r', label='acc-z')
ax[0].legend()
ax[1].plot(array[:, 3], 'b', label='gyr-x')
ax[1].plot(array[:, 4], 'g', label='gyr-y')
ax[1].plot(array[:, 5], 'r', label='gyr-z')
ax[1].legend()
#ax[2].plot(array[:, 6], 'b', label='mag-x')
#ax[2].plot(array[:, 7], 'g', label='mag-y')
#ax[2].plot(array[:, 8], 'r', label='mag-z')
#ax[2].legend()
plt.xlabel('time')
ax[0].set_title(title_str)
plt.show()
def calZeroCrossRate(array):
t1 = array[:-1]
t2 = array[1:]
zeroCrossRate = np.sum((t1*t2)<0)
return zeroCrossRate
def calZeroCrossRate_xyz(array_xyz):
zeroCrossRate_x = calZeroCrossRate(array_xyz[:,0])
zeroCrossRate_y = calZeroCrossRate(array_xyz[:,1])
zeroCrossRate_z = calZeroCrossRate(array_xyz[:,2])
zeroCrossRate_xyz = [zeroCrossRate_x, zeroCrossRate_y, zeroCrossRate_z]
return np.array(zeroCrossRate_xyz)
def plotEnergy3(energy_array, title_str):
f, ax = plt.subplots(2)
ax[0].plot(energy_array[:,0], 'b', label='unbiased acc energy')
ax[1].plot(energy_array[:,1], 'r', label='unbiased gyr energy')
ax[0].legend()
ax[1].legend()
plt.xlabel('time')
ax[0].set_title(title_str)
def calEntrophy(gyr_energy):
gyr_energy_norm = gyr_energy/sum(gyr_energy)
entropy = -sum(gyr_energy_norm * np.log(gyr_energy_norm))
return entropy
def calmanFilter(z, R=0.05**2):
N = len(z)
Q = 1e-5
xhat = np.zeros(N)
P = np.zeros(N)
xhatminus = np.zeros(N)
Pminus = np.zeros(N)
K = np.zeros(N)
xhat[0] = z[0]
P[0] = 1.0
for k in range(1, N):
# time update
xhatminus[k] = xhat[k-1] #X(k|k-1) = AX(k-1|k-1) + BU(k) + W(k),A=1,BU(k) = 0
Pminus[k] = P[k-1]+Q #P(k|k-1) = AP(k-1|k-1)A' + Q(k) ,A=1
# measurement update
K[k] = Pminus[k]/( Pminus[k]+R ) #Kg(k)=P(k|k-1)H'/[HP(k|k-1)H' + R],H=1
xhat[k] = xhatminus[k]+K[k]*(z[k]-xhatminus[k]) #X(k|k) = X(k|k-1) + Kg(k)[Z(k) - HX(k|k-1)], H=1
P[k] = (1-K[k])*Pminus[k] #P(k|k) = (1 - Kg(k)H)P(k|k-1), H=1
return xhat
# 根据事件的时间长度和整个事件的能量熵来同时来检测是否有震动
# 为什么这边只根据gyr energy来检测震动,因为,gyr energy在震动时是一个山峰,而acc energy则因为有1g 的bias
# 时一种震荡,暂时较难检测
def detectVibration(gyr_energy, gyr_energy_filter, acc_energy, acc_energy_filter):
# Energy uppper threshold
T_upper = 0.02
energy_max = max(gyr_energy)
# Energy lower threshold
#T_lower = 0.03
T_lower = energy_max/2
N = len(gyr_energy)
start_ind = -1
end_ind = N-1
max_period = 0
num_period = 0
for i in range(N):
if start_ind == -1 and gyr_energy[i] >= T_upper:
start_ind = i
elif start_ind != -1 and (gyr_energy[i] < T_lower or i == N-1):
end_ind = i
tmp = end_ind - start_ind
num_period += 1
if tmp > max_period:
max_period = tmp
start_ind = -1
entrophy_gyr = calEntrophy(gyr_energy)
entrophy_acc = calEntrophy(acc_energy)
#print num_period,
#print "vibration: ", max_period, "entrophy gyr:", entrophy_gyr, "entrophy acc:", entrophy_acc
T_period = 10
T_entrophy = 2.8
gyr_energy_filter_max = max(gyr_energy_filter)
acc_energy_filter_max = max(acc_energy_filter)
# 熵很小,表示能量很集中
if (max_period < T_period and (entrophy_gyr < T_entrophy or entrophy_acc < T_entrophy)):
return True
else:
return False
def extractFeatures(acc_energy_seg, gyr_energy_seg):
acc_min = min(acc_energy_seg)
acc_max = max(acc_energy_seg)
acc_avg = np.mean(acc_energy_seg)
acc_std = np.std(acc_energy_seg)
acc_entrophy = calEntrophy(acc_energy_seg)
gyr_min = min(gyr_energy_seg)
gyr_max = max(gyr_energy_seg)
gyr_avg = np.mean(gyr_energy_seg)
gyr_std = np.std(gyr_energy_seg)
gyr_entrophy = calEntrophy(gyr_energy_seg)
features = np.array([acc_min, acc_max, acc_avg, acc_std, acc_entrophy, gyr_min, gyr_max, gyr_avg,\
gyr_std, gyr_entrophy])
return features
# classify vibration using trained model
def classifyVibreation(acc_energy, gyr_energy):
features_mean = [0.000952000973704 , 0.194286318888 , 0.0385421548696 , 0.0469895260649 , 2.7227848987 , \
0.00269014390511 , 0.199455724819 , 0.0472600002731 , 0.0501533674823 , 2.77176581178]
features_std = [0.00173738012652 , 0.218467389142 , 0.0586856225518 , 0.0582037726523 , 0.4353989121 ,\
0.00280160435942 , 0.181247415458 , 0.0569260882929 , 0.0526250891454 , 0.430318042765]
coefs = [-0.901028005951 , 0.240717631089 , 0.215008926282 , 0.400052482044 , -0.240335062946 ,\
-0.456934238853 , 0.69209487438 , -1.61818759692 , -0.598541043596 , -0.437675523147 ]
intercept = -0.81884858
features_mean = np.array(features_mean)
features_std = np.array(features_std)
coefs = np.array(coefs)
features = extractFeatures(acc_energy, gyr_energy)
features_norm = (features - features_mean)/features_std
res = sum(features_norm * coefs) + intercept
if res >= 0:
return True
else:
return False
def classifyMoving(acc_energy, gyr_energy):
features_mean = [0.000952000973704 , 0.194286318888 , 0.0385421548696 , 0.0469895260649 , 2.7227848987 , \
0.00269014390511 , 0.199455724819 , 0.0472600002731 , 0.0501533674823 , 2.77176581178]
features_std = [0.00173738012652 , 0.218467389142 , 0.0586856225518 , 0.0582037726523 , 0.4353989121 ,\
0.00280160435942 , 0.181247415458 , 0.0569260882929 , 0.0526250891454 , 0.430318042765]
coefs = [0.0350485903458 , 0.157850144083 , -0.585336685673 , -0.0734565873069 , 0.890674885505 ,\
1.14754770319 , -1.01126030485 , 1.57410758289 , 0.147070224476 , 0.421546997494]
intercept = 0.35973679
features_mean = np.array(features_mean)
features_std = np.array(features_std)
coefs = np.array(coefs)
features = extractFeatures(acc_energy, gyr_energy)
features_norm = (features - features_mean)/features_std
res = sum(features_norm * coefs) + intercept
if res > 0:
return True
else:
return False
def classifyState(energy_array, array):
energy_acc = energy_array[:, 0]
energy_gyr = energy_array[:, 1]
energy_acc_filter = calmanFilter(energy_acc)
array_acc = array[:, 0:3]
array_gyr = array[:, 3:6]
N = len(energy_gyr)
energy_gyr_filter = calmanFilter(energy_gyr)
# 30 points per second
interval = 30
states = []
#print "seg energy sum"
for i in range(0, N, interval):
energy_acc_seg = energy_acc[i : i+interval]
energy_gyr_seg = energy_gyr[i : i+interval]
array_gyr_seg = array_gyr[i : i+interval, :]
#print array_gyr_seg.shape
energy_gyr_filter_seg = energy_gyr_filter[i : i+interval]
energy_acc_fliter_seg = energy_acc_filter[i : i+interval]
zeroCrossRate_gyr = calZeroCrossRate_xyz(array_gyr_seg)
energy_gyr_seg_sum = sum(energy_gyr_seg)
isRotatingPotential = False
isRotatingPotential = (sum(zeroCrossRate_gyr == 0)>=1)
acc_seg_max = np.max(energy_acc_seg)
gyr_seg_max = np.max(energy_gyr_seg)
# Threshold for ACC
# 会随着传感器的变化而变化
T_acc_energy_slow = 0.02
## Threshold for Gyr
# 会随着传感器变化
T_gyr_energy_slow = 0.01
# 有统计依据
T_gyr_energy_sum_rotate_lower = 1.5
T_gyr_energy_sum_rotate_upper = 12
T_gyr_energy_sum_vibration = 3
T_gyr_energy_sum_acc = 0.25
default_state = 0
if gyr_seg_max > T_gyr_energy_slow or acc_seg_max > T_acc_energy_slow:
# Having Rotation components
if ((isRotatingPotential == True and energy_gyr_seg_sum > T_gyr_energy_sum_rotate_lower) or\
energy_gyr_seg_sum >= T_gyr_energy_sum_rotate_upper):
default_state += 2
isVibrationPotential = detectVibration(energy_gyr_seg, energy_gyr_filter_seg, energy_acc_seg,\
energy_acc_fliter_seg)
if default_state == 0 and isVibrationPotential == True and\
energy_gyr_seg_sum <= T_gyr_energy_sum_vibration:# and \
#classifyVibreation(energy_acc_seg, energy_gyr_seg) == True:
default_state = -1
elif (default_state == 0 and energy_gyr_seg_sum > T_gyr_energy_sum_acc): #or\
#(default_state == 2 and acc_seg_max > T_acc_energy_slow):
default_state += 1
#if classifyMoving(energy_acc_seg, energy_gyr_seg):
# default_state += 1
#else:
# default_state = -1
states.append(default_state)
states = np.array(states)
states2 = np.zeros(0)
for j in range(len(states)):
states2 = np.concatenate((states2, np.ones(interval)*states[j]))
return states2
def plot_true_predict_labels(true_label, predict_label):
true_label[true_label == -1] = 0.5
predict_label[predict_label == -1] = 0.5
plt.plot(true_label, 'r', label='True state')
plt.plot(predict_label, 'b', label='predict state')
plt.legend()
plt.title("0:Still -1:Vibration 1:Moving 2:Rotating")
plt.ylim([-1,3])
plt.show()
def test(fileName):
sigFilePath, labelFilePath = getFilePath(fileName)
#res_array = getSigs(fileName)
res_array, true_label = extractSig(sigFilePath, labelFilePath)
energy_array = energyXYZ(res_array)
#correct gyr bias
correctBias_gyr(res_array[:,3:6], energy_array[:,1])
# res_array have been changed, so compute again
energy_array = energyXYZ(res_array)
# unbiased acc energy
energy_array[:,0] = correctBias_accEnergy(energy_array[:,0], energy_array[:,1])
plotSigs(res_array, fileName)
predict_label = classifyState(energy_array, res_array)
pylab.rcParams['figure.figsize'] = (14.0, 4.0)
plot_true_predict_labels(true_label, predict_label)
pylab.rcParams['figure.figsize'] = (14.0, 10.0)
plotEnergy3(energy_array, fileName + '-Energy')
if __name__=='__main__':
dir = '../data/'
still_fileNames = ['still_normal.txt', 'still_leftDown.txt', 'still_rightDown.txt', 'still_frontDown.txt',\
'still_backDown.txt', 'still_leftDownLean.txt', 'still_rightDownLean.txt',\
'still_frontDownLean.txt', 'still_backDownLean.txt']
#fileName = dir + 'still_normal.txt'
#test(fileName)
res = np.zeros(0)
for fileName in still_fileNames:
res_array = getSigs(dir + fileName)
energy_array = energyXYZ(res_array)
energy_acc_correctBias = correctBias_accEnergy(energy_array[:,0], energy_array[:,1])
res = np.concatenate((res, energy_acc_correctBias))
print max(res)
#plt.plot(res)
#plt.show()
plt.hist(res, 100)
def test3(fileName):
sigFilePath, labelFilePath = getFilePath(fileName)
#res_array = getSigs(fileName)
res_array, true_label = extractSig(sigFilePath, labelFilePath)
energy_array = energyXYZ(res_array)
fig, ax = plt.subplots(2)
ax[0].plot(res_array[:,3], label = 'gyr-x')
ax[0].plot(res_array[:,4], label = 'gyr-y')
ax[0].plot(res_array[:,5], label = 'gyr-z')
ax[0].legend()
ax[1].plot(energy_array[:,1], label = 'biased gyr energy')
ax[1].legend()
ax[0].set_title(fileName)
plt.show()
correctBias_gyr(res_array[:,3:6], energy_array[:,1])
# res_array have been changed, so compute again
energy_array = energyXYZ(res_array)
# unbiased acc energy
energy_array[:,0] = correctBias_accEnergy(energy_array[:,0], energy_array[:,1])
fig2, ax2 = plt.subplots(2)
ax2[0].plot(res_array[:,3], label = 'gyr-x')
ax2[0].plot(res_array[:,4], label = 'gyr-y')
ax2[0].plot(res_array[:,5], label = 'gyr-z')
ax2[0].legend()
ax2[1].plot(energy_array[:,1], label = 'unbiased gyr energy')
ax2[1].legend()
ax2[0].set_title(fileName)
plt.show()
if __name__ == '__main__':
test3('still_frontDown.txt');
if __name__=='__main__':
dir = '../data/'
still_fileNames = ['still_normal.txt', 'still_leftDown.txt', 'still_rightDown.txt', 'still_frontDown.txt',\
'still_backDown.txt', 'still_leftDownLean.txt', 'still_rightDownLean.txt',\
'still_frontDownLean.txt', 'still_backDownLean.txt']
for fileName in still_fileNames:
#fileName = dir + fileName
test(fileName)
if __name__=='__main__':
dir = '../data/'
fileName = 'motion_xMove_uniform.txt'
test(fileName)
if __name__=='__main__':
dir = '../data/'
fileName = 'motion_xMove_uniform_slow.txt'
test(fileName)
if __name__=='__main__':
dir = '../data/'
fileName = 'motion_yMove_uniform.txt'
test(fileName)
if __name__=='__main__':
dir = '../data/'
fileName = 'motion_yMove_uniform_slow.txt'
test(fileName)
if __name__=='__main__':
dir = '../data/'
fileName = 'motion_zMove_uniform.txt'
test(fileName)
if __name__=='__main__':
dir = '../data/'
fileName = 'motion_zMove_uniform_slow.txt'
test(fileName)
if __name__=='__main__':
dir = '../data/'
for i in range(1, 17):
fileName = 'motion_xyz_Move_uniform' + str(i) + '.txt'
test(fileName)
if __name__=='__main__':
dir = '../data/'
rotateQuickUniform_fileNames = ['motion_xRotate_uniform_anticlock.txt', 'motion_xRotate_uniform_clock.txt',\
'motion_yRotate_uniform_anticlock.txt', 'motion_yRotate_uniform_clock.txt',\
'motion_zRotate_uniform_anticlock.txt', 'motion_zRotate_uniform_clock.txt',\
'motion_zRotate_uniform_anticlock_new.txt', 'motion_zRotate_uniform_clock_new.txt']
for fileName in rotateQuickUniform_fileNames:
test(fileName)
if __name__=='__main__':
dir = '../data/'
rotateSlowUniform_fileNames = ['multiStates.txt', 'multiStates2.txt', 'multiStates3.txt', 'multiStates4.txt']
for fileName in rotateSlowUniform_fileNames:
#fileName = dir + fileName
test(fileName)
if __name__=='__main__':
dir = '../data/'
fileName = 'motion_rotate_move1.txt'
test(fileName)
if __name__=='__main__':
dir = '../data/'
fileName = 'motion_rotate_move2.txt'
test(fileName)
if __name__=='__main__':
dir = '../data/'
fileName = 'motion_rotate_move3.txt'
test(fileName)
if __name__=='__main__':
dir = '../data/'
fileName = 'motion_rotate_move4.txt'
test(fileName)
if __name__=='__main__':
dir = '../data/'
fileName = 'motion_rotate_move5.txt'
test(fileName)
if __name__=='__main__':
dir = '../data/'
fileName = dir + 'motion_rotate_move6.txt'
#test(fileName)
if __name__=='__main__':
dir = '../data/'
fileName = dir + 'motion_rotate_move7.txt'
#test(fileName)
if __name__=='__main__':
dir = '../data/'
fileName = dir + 'motion_rotate_move8.txt'
#test(fileName)
if __name__=='__main__':
dir = '../data/'
for i in range(1, 21):
fileName = 'motion_vibration' + str(i) + '.txt'
test(fileName)
if __name__=='__main__':
dir = '../data/'
for i in range(1, 16):
fileName = 'motion_xyz_Move_speedup' + str(i) + '.txt'
test(fileName)
def test2(fileName):
sigFilePath, labelFilePath = getFilePath(fileName)
#res_array = getSigs(fileName)
res_array, true_label = extractSig(sigFilePath, labelFilePath)
energy_array = energyXYZ(res_array)
#correct gyr bias
correctBias_gyr(res_array[:,3:6], energy_array[:,1])
# res_array have been changed, so compute again
energy_array = energyXYZ(res_array)
# unbiased acc energy
energy_array[:,0] = correctBias_accEnergy(energy_array[:,0], energy_array[:,1])
predict_label = classifyState(energy_array, res_array)
N1 = len(predict_label)
N2 = len(true_label)
if N2 < N1:
predict_label = predict_label[:N2]
return true_label, predict_label
def evaluation(true_label, predict_label):
class_num = 4
confused_matrix = np.zeros((class_num, class_num))
for i in range(-1, 3):
for j in range(-1, 3):
confused_matrix[i,j] = sum((predict_label == i) & (true_label == j))
print int(confused_matrix[i,j]),
print '\n'
if __name__ == "__main__":
still_fileNames = ['still_normal.txt', 'still_leftDown.txt', 'still_rightDown.txt', 'still_frontDown.txt',\
'still_backDown.txt', 'still_leftDownLean.txt', 'still_rightDownLean.txt',\
'still_frontDownLean.txt', 'still_backDownLean.txt']
moveUniform_fileNames = ['motion_xMove_uniform.txt', 'motion_xMove_uniform_slow.txt',\
'motion_yMove_uniform.txt', 'motion_yMove_uniform_slow.txt',\
'motion_zMove_uniform.txt', 'motion_zMove_uniform_slow.txt']
for i in range(1,17):
tmp_str = 'motion_xyz_Move_uniform' + str(i) + '.txt'
moveUniform_fileNames.append(tmp_str)
rotateSlowUniform_fileNames = ['multiStates.txt', 'multiStates2.txt', 'multiStates3.txt', 'multiStates4.txt']
rotateQuickUniform_fileNames = ['motion_xRotate_uniform_anticlock.txt', 'motion_xRotate_uniform_clock.txt',\
'motion_yRotate_uniform_anticlock.txt', 'motion_yRotate_uniform_clock.txt',\
'motion_zRotate_uniform_anticlock.txt', 'motion_zRotate_uniform_clock.txt',\
'motion_zRotate_uniform_anticlock_new.txt', 'motion_zRotate_uniform_clock_new.txt']
vibration_fileNames = []
for i in range(1, 21):
tmp_str = 'motion_vibration' + str(i) + '.txt'
vibration_fileNames.append(tmp_str)
moveSpeedup_fileNames = []
for i in range(1, 16):
tmp_str = 'motion_xyz_Move_speedup' + str(i) + '.txt'
moveSpeedup_fileNames.append(tmp_str)
fileNames = [still_fileNames, moveUniform_fileNames, rotateSlowUniform_fileNames,\
rotateQuickUniform_fileNames, vibration_fileNames, moveSpeedup_fileNames]
true_labels = np.zeros(0)
predict_labels = np.zeros(0)
for tmp in fileNames:
for fileName in tmp:
true_label, predict_label = test2(fileName)
true_labels = np.concatenate((true_labels,true_label))
predict_labels = np.concatenate((predict_labels, predict_label))
evaluation(true_labels, predict_labels)
x = np.array([[1,2],[3,4]])
print x - np.mean(x, 0)
x = np.array([0.01,0.02,0.01, 0.2, 0.1, 0.001])
print calEntrophy(x)/len(x)
x = np.array([0.01, 0.01,0.01, 0.01,0.02,0.01, 0.2, 0.1, 0.001, 0.01, 0.01,0.01])
print calEntrophy(x)/len(x)
d = '../data/'
fileName = d+'still_normal.txt'
sig_arr = getSigs(fileName)
sig_arr = sig_arr - np.mean(sig_arr, 0)
plotSigs(sig_arr, fileName)
energy = energyXYZ(sig_arr)
print np.mean(energy[:,0])
print np.mean(energy[:,1])
fig, ax = plt.subplots(2)
ax[0].plot(energy[:,0])
ax[1].plot(energy[:,1])
plt.show()
d = '../data/'
fileName = d+'still_normal_sensor2.txt'
sig_arr = getSigs(fileName)
sig_arr = sig_arr - np.mean(sig_arr, 0)
energy = energyXYZ(sig_arr)
#energy = energyXYZ(sig_arr)
print np.mean(energy[:,0])
print np.mean(energy[:,1])
sig_arr[:,0:3] = sig_arr[:,0:3]*0.006/0.004
sig_arr[:,3:6] = sig_arr[:,3:6]*0.0027/0.03
plotSigs(sig_arr, fileName)
energy = energyXYZ(sig_arr)
fig, ax = plt.subplots(2)
ax[0].plot(energy[:,0])
ax[1].plot(energy[:,1])
plt.show()
d = '../data/'
fileName = d+'motion_xyz_Move_uniform_sensor2.txt'
sig_arr = getSigs(fileName)
sig_arr = sig_arr - np.mean(sig_arr, 0)
#sig_arr[:,0:3] = sig_arr[:,0:3]*0.006/0.004
#sig_arr[:,3:6] = sig_arr[:,3:6]*0.0027/0.03
energy = energyXYZ(sig_arr)
plotSigs(sig_arr, fileName)
fig, ax = plt.subplots(2)
ax[0].plot(energy[:,0])
ax[1].plot(energy[:,1])
plt.show()
d = '../data/'
fileName = d+'motion_yRotate_sensor2.txt'
sig_arr = getSigs(fileName)
sig_arr = sig_arr - np.mean(sig_arr, 0)
sig_arr[:,0:3] = sig_arr[:,0:3]*0.006/0.004
sig_arr[:,3:6] = sig_arr[:,3:6]*0.0027/0.03
energy = energyXYZ(sig_arr)
plotSigs(sig_arr, fileName)
fig, ax = plt.subplots(2)
ax[0].plot(energy[:,0])
ax[1].plot(energy[:,1])
plt.show()
r1= 0.006/0.004
r2 = 0.0027/0.03
print r1, r2